package com.twb.system.service;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotBlank;

import com.twb.core.base.entity.TwbPageInfo;
import com.twb.core.base.service.IBaseService;
import com.twb.system.entity.twbUserConfig.TwbUserConfig;
import com.twb.system.entity.twbUserConfig.dto.SearchTwbUserConfigDto;
import com.twb.system.entity.twbUserConfig.vo.SaveTwbUserConfigVo;
import com.twb.system.entity.twbUserConfig.vo.SearchTwbUserConfigVo;
import com.twb.system.entity.twbUserConfig.vo.UpdateTwbUserConfigByIdVo;

/** 
 * @ClassName ITwbUserConfigService 
 * @Description 用户配置管理 service接口
 
 * @author DSY
 * @date 2022-01-27 10:13:37 
 */ 
public interface ITwbUserConfigService extends IBaseService<TwbUserConfig> {

	/**
	 * @Title  searchTwbUserConfig
	 * @Description 分页查询
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2022-01-27 10:13:37
	 */
	public TwbPageInfo<SearchTwbUserConfigDto> searchTwbUserConfig(SearchTwbUserConfigVo vo);
	
	/**
	 * @Title  searchTwbUserConfig
	 * @Description 查询集合
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2022-01-27 10:13:37
	 */
	public List<SearchTwbUserConfigDto> searchTwbUserConfigList(SearchTwbUserConfigVo vo);

	/**
	 * @Title  saveTwbUserConfig
	 * @Description 保存信息
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2022-01-27 10:13:37
	 */
	public boolean saveTwbUserConfig(SaveTwbUserConfigVo vo);

	/**
	 * @Title  updateTwbUserConfigById
	 * @Description 更新信息
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2022-01-27 10:13:37
	 */
	public boolean updateTwbUserConfigById(UpdateTwbUserConfigByIdVo vo);

	/**
	 * @Title  deleteTwbUserConfigById
	 * @Description 删除信息
	 * @param id
	 * @return
	 * @author DSY
	 * @date 2022-01-27 10:13:37
	 */
	public boolean deleteTwbUserConfigById(String id);
	/**
	 * @Title  deleteTwbUserConfigByIds
	 * @Description 批量删除信息
	 * @param ids
	 * @return
	 * @author DSY
	 * @date 2022-01-27 10:13:37
	 */
	public boolean deleteTwbUserConfigByIds(String ids);
	
	/**
	 * @Title  logicBatchDeleteTwbUserConfigByIds
	 * @Description 批量逻辑删除
	 * @param ids
	 * @return
	 * @author DSY
	 * @date 2022-01-27 10:13:37
	 */
	public int logicBatchDeleteTwbUserConfigByIds(String ids);
	/**
	 * @Title  exportExcel
	 * @Description 导出excel
	 * @param exportExcelVo
	 * @param searchVo
	 * @return
	 * @author DSY
	 * @date 2022-01-27 10:13:37
	 */
	public void exportExcel(SearchTwbUserConfigVo vo, HttpServletResponse response) throws Exception;
	
	/**
	 * @Title  importExcel
	 * @Description 导入excel
	 * @param map
	 * @return
	 * @author DSY
	 * @date 2022-01-27 10:13:37
	 */
	public int importExcel(Map<String, String> map);

	/**
	 * @Title initRedisUserConfig
	 * @Description 初始化redis缓存
	 * @return
	 * @author DSY
	 * @date 2022年1月27日 上午10:59:53
	 */
	boolean initRedisUserConfig(TwbUserConfig userconfig);
	
	/**
	 * @Title initRedisUserConfig
	 * @Description 初始化redis缓存
	 * @return
	 * @author DSY
	 * @date 2022年1月27日 下午12:14:06
	 */
	boolean initRedisUserConfig();

	/**
	 * @Title deleteTwbUserConfigByUserIdAndType
	 * @Description 删除用户配置
	 * @param userId
	 * @param configType
	 * @return
	 * @author DSY
	 * @date 2022年1月27日 上午11:35:48
	 */
	public boolean deleteTwbUserConfigByUserIdAndType(@NotBlank String userId, @NotBlank String configType);
	
	/**
	 * @Title getRedisUserConfig
	 * @Description 获取用户配置
	 * @param userId
	 * @param configType
	 * @return
	 * @author DSY
	 * @date 2022年1月27日 上午11:42:27
	 */
	public String getRedisUserConfig(String userId,String configType);
	/**
	 * @Title getRedisLoginUserConfig
	 * @Description 获取当前登录用户的配置信息
	 * @return
	 * @author DSY
	 * @date 2022年1月27日 下午12:00:26
	 */
	public Map<String,String> getRedisLoginUserConfig();
}
